<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Interoperable Object Reference</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Interoperable_Object_Reference"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Interoperable_Object_Reference rootpage-Interoperable_Object_Reference skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Interoperable Object Reference</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p>Die <b>Interoperable Object Reference</b>, kurz IOR, beschreibt eine Objektreferenz auf ein <a href="CORBA" class="mw-redirect" title="CORBA">CORBA</a>-Objekt. Es handelt sich um Objektreferenzen für Objekte aus dem Bereich der <a href="Objektorientierung" title="Objektorientierung">Objektorientierung</a>, die in verschiedenen Computern existieren und systemübergreifend genutzt werden.
</p>
<div class="mw-heading mw-heading2"><h2 id="Objekte_und_Referenzen_allgemein">Objekte und Referenzen allgemein</h2></div>
<p>Die <a href="Objektorientierung" title="Objektorientierung">Objektorientierung</a> als Methode der Strukturierung einer Software kennt Objekte, die zur Laufzeit eines Systems erzeugt werden und im <a href="Arbeitsspeicher" title="Arbeitsspeicher">Arbeitsspeicher</a> des Computers existieren oder auch in <a href="Objektorientierte_Datenbank" class="mw-redirect" title="Objektorientierte Datenbank">objektorientierten Datenbanken</a> langfristig gespeichert werden. Bei der Erzeugung solcher Objekte erhält man in der Regel eine <a href="Referenz_(Programmierung)" title="Referenz (Programmierung)">Referenz</a>, die dieses soeben erzeugte Objekt jederzeit eindeutig unter allen möglichen vorkommenden Objekten identifiziert.
</p><p>Diese Referenz wird dann genutzt, um Nachrichten an dieses Objekt zu senden, auf in diesem Objekt gespeicherte Daten zuzugreifen oder diese zu verändern.
Referenzen können genau wie andere Variablen oder Werte weitergegeben werden.
</p>
<div class="mw-heading mw-heading2"><h2 id="Objekte_und_Referenzen_in_verteilten_Systemen">Objekte und Referenzen in verteilten Systemen</h2></div>
<p>In verteilten Systemen, bei denen sich Objekte in unterschiedlichen Computern (oder zumindest in getrennten Bereichen des Arbeitsspeichers) befinden, muss es einen Mechanismus geben, der Objekt-Referenzen über Systemgrenzen hinweg transportieren kann. Dazu sollte es möglich sein, diese Referenz in ein für die Übertragung geeignetes Format zu konvertieren (Stringifizierung) oder auch für die spätere Verwendung zu speichern.
</p>
<div class="mw-heading mw-heading2"><h2 id="Interoperable_Object_Reference">Interoperable Object Reference</h2></div>
<p>Zu diesem Zweck der Systemgrenzen übergreifenden Kommunikation spezifiziert der <a href="CORBA" class="mw-redirect" title="CORBA">CORBA</a>-Standard die <b>Interoperable Object Reference</b>, kurz IOR genannt. Die IOR enthält alle Informationen, um einen ggf. prozess- und systemübergreifenden Kommunikationskanal zu einem Objekt aufzubauen und entsprechende Nachrichten, ähnlich denen innerhalb eines Prozesses, auszutauschen.
</p><p>Dazu gehören Angaben wie:
</p>
<ul><li>Art des Kommunikationsprotokolls</li>
<li>Angaben zum Ort des Objektes, wie im Fall von TCP/IP eine IP-Adresse und ein <a href="Port_(Protokoll)" class="mw-redirect" title="Port (Protokoll)">Port</a></li>
<li>Vorgaben zur Darstellung von Text und Daten, wie Codepages, <a href="Byte-Reihenfolge" title="Byte-Reihenfolge">Endian</a>, Verschlüsselung oder Kompression der Daten</li>
<li>Angaben zur Identität des Objekts im Zielsystem</li></ul>
<p>Die <a href="Object_Management_Group" title="Object Management Group">OMG</a> spezifiziert für diese Angaben so genannte "TaggedProfile" und "TaggedComponent", wie der folgende Auszug der <a href="Schnittstellenbeschreibungssprache" title="Schnittstellenbeschreibungssprache">IDL</a> aus der Spezifikation zeigt.
</p>
<pre> struct TaggedProfile {
ProfileId tag;
sequence <octet> profile_data;
};
struct IOR {
string type_id;
sequence <TaggedProfile> profiles;
};
struct TaggedComponent {
ComponentId tag;
sequence <octet> component_data;
};
</pre>
<p>Profiledaten und Komponentdaten enthalten eine Datenstruktur, deren Bedeutung durch das Tag (hier eine Zahl) festgelegt wird. Für einige Tags legt die CORBA-Spezifikation deren Datenstruktur fest, z. B. beschreibt ein ProfileId-Tag 0 ein <a href="IIOP" title="IIOP">IIOP</a> Profile.
</p><p>Der jeweilige <a href="Object_Request_Broker" title="Object Request Broker">ORB</a> eines Systems bekommt die Aufgabe, IORs aus anderen Systemen (und von anderen ORBs) zu interpretieren und in eine Objektreferenz zu verwandeln oder auch Objektreferenzen in eine textuelle Interpretation zu verwandeln (stringifizierte IOR).
</p><p>Hersteller, die eigene <a href="Object_Request_Broker" title="Object Request Broker">ORB</a>-Implementierungen nach der CORBA-Spezifikation erstellen, können auch eigene Tags verwenden. Um Fehlinterpretationen auszuschließen, sollten diese sich jedoch nicht mit anderweitig vergebenen Tags überschneiden. Kennt ein ORB die Bedeutung eines Tags nicht, kann und darf er die in der Datenstruktur enthaltenen Informationen nicht verwenden.
</p><p>Aus einer IOR kann nicht auf die Methoden und Datenelemente des referenzierten Objektes geschlossen werden. Die einzige Angabe in der IOR ist der Typ des Objekts (type_id, auch Repository-Id) genannt, der zu der <a href="Schnittstellenbeschreibungssprache" title="Schnittstellenbeschreibungssprache">IDL</a> korrespondieren sollte, welche das Interface dieses Objekts beschreibt.
</p>
<div class="mw-heading mw-heading2"><h2 id="IOR-Nachschlagewerke">IOR-Nachschlagewerke</h2></div>
<p>Der CORBA Naming Service, der als Service ebenfalls von der OMG spezifiziert wurde, ist eine Möglichkeit zur Speicherung von Objekt-Referenzen unter einem Namen.
Da der Naming Service ebenso ein CORBA-Objekt darstellt, dessen Referenz bekannt sein muss, um es zu nutzen, stellt sich jedoch das Problem, wie die IOR zum Aufrufer kommt, was im CORBA-Standard nicht spezifiziert ist. Stringifizierte IORs lassen sich jedoch in Dateien speichern oder per Mail, Web oder Filetransfer verschicken.
</p>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.triodia.com/staff/michi/cacm.pdf">Binding, Migration and Scalability in CORBA, Michi Henning</a> (PDF-Datei; 75 kB)</li>
<li><a rel="nofollow" class="external text" href="http://www.omg.org/spec/CORBA/3.1/Interoperability/PDF/">OMG Spezifikation: CORBA 3.1, Part 2 - Interoperability</a> (PDF-Datei; 2,1 MB)</li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2022-03-28" href="https://de.wikipedia.org/wiki/?title=Interoperable_Object_Reference&oldid=221583536">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>